# python数据基础第十节：数据可视化
"""
python数据基础第十节：数据可视化
    1、散点图：是以一个变量为横坐标，另一变量为纵坐标，利用散点（坐标点）的分布形态反映变量关系的一种图形
        plot(x,y,"·",color=(r,g,b))
        plt.xlabel("x轴标签")
        plt.ylabel("y轴标签")
        plt.grid(True)
    2、折线图：用直线将个数据点连接起来而组成的图形，一折线的方式显示变化趋势
        plot(x,y,style,color,linewidth)
            style,划线的样式
            color,划线的颜色
            linewidth，线的宽度
        title("图的标题")
    3、饼图：
        pie(x,labels,colors,explode,autopct)
            x：进行绘图的序列
            labels：饼图的各部分标签
            colors：饼图的各部分颜色，使用RGB标颜色
            explode：需要突出的块状序列
            autopct：饼图占比的显示格式，%.2f:保留两位小数
    4、柱型图：
        bar(left,height,width,color)
        barh(bottom,width,height,color)
            left，x轴的位置序列，一般采用arange函数产生一个序列
            height,y轴的数值序列，也就是柱型图的高度，一般就是我们需要展示的数据
            width,柱形图的宽度，一般设置为1
            color,柱型图的填充颜色
    5、直方图：
        hist(x,color,bins,cumulative=Flase)
            x：需要进行绘制的向量
            color：直方图填充的颜色
            bins ：设置直方图的分组个数
            cumulative ：设置是否累计计算，默认那是Flase


"""
# 导出数据的模块在DataFrame模块下
from pandas import DataFrame, read_csv, to_datetime
import pandas
import matplotlib.pyplot as plt
import matplotlib
import numpy
from datetime import datetime

# 散点图
df1 = read_csv("E:\\Python\\pyspark_demo01\\out_data\\data13.csv")
# 设置中文显示
font = {"family":"SimHei"}
matplotlib.rc("font",**font)
# 条件
plt.plot(df1["广告费用"],df1["购买用户数"],".")
#
plt.xlabel("广告费用")
plt.ylabel("购买用户")
plt.grid(True)

plt.show()


# 折线图
df2 = read_csv("E:\Python\pyspark_demo01\out_data\data14.csv")
df2["购买日期"] = pandas.to_datetime(df2["日期"])
# 使用横线连接
plt.plot(df2["购买日期"],df2["购买用户数"],"-")
plt.plot(df2["购买日期"],df2["购买用户数"],"--")
plt.plot(df2["购买日期"],df2["购买用户数"],"-.")
plt.plot(df2["购买日期"],df2["购买用户数"],":")
plt.plot(df2["购买日期"],df2["购买用户数"],"_")
plt.plot(df2["购买日期"],df2["购买用户数"],",")
plt.plot(df2["购买日期"],df2["购买用户数"],"o")
plt.plot(df2["购买日期"],df2["购买用户数"],"v")
plt.plot(df2["购买日期"],df2["购买用户数"],"^")
plt.plot(df2["购买日期"],df2["购买用户数"],"<")
plt.plot(df2["购买日期"],df2["购买用户数"],">")
# 添加为红色
plt.plot(df2["购买日期"],df2["购买用户数"],"-",color="r")
# 设置线框
plt.plot(df2["购买日期"],df2["购买用户数"],"-",color="r",linwWidth=10)
plt.show()

# 饼图
df3 = read_csv("E:\Python\pyspark_demo01\out_data\data15.csv")
gb=df3.groupby(
    by=["通信品牌"],
    as_index=False
)["号码"].agg({"用户数":numpy.size})

font = {
    "family":"SimHei"
}
matplotlib.rc("font",**font)
plt.pie(gb["用户数"],labels=gb["通信品牌"],autopct="%.2f")
plt.show()

# 柱型图
df4 = read_csv("E:\Python\pyspark_demo01\out_data\data16.csv")
font = {"family":"SimHei"}
matplotlib.rc("font",**font)

gb= df4.groupby(
    by=["手机品牌"]
)["月消费（元）"].agg({
    "月消费":numpy.sum
})

index = numpy.arange(gb["月消费"].size)

plt.bar(index,gb["月消费"],1,color="G")
plt.show()

plt.bar(index,gb["月消费"],1,color="G")
plt.xticks(index+1/2,gb.index)
plt.show()


plt.bar(index,gb["月消费"],1,color="G")
plt.ylabel(index+1/2,gb.index)
plt.show()


# 直方图
df5 = read_csv("E:\\Python\\pyspark_demo01\\out_data\\data13.csv")
font = {
    'family' : 'SimHei'
}
matplotlib.rc('font', **font)
plt.hist(df5['购买用户数'])
plt.show()
# 分为20组
plt.hist(df5['购买用户数'], bins=20)
plt.show()
# 分为20组，累计计算
plt.hist(df5['购买用户数'], bins=20, cumulative=True)
plt.show()